package com.virjar.vscrawler.web.model;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * Created by virjar on 2018/2/3.<br>
 * 前端返回统一数据结构
 */
@Data
public class WebJsonResponse<T> {

    // 状态
    private int status;

    // 消息
    private  String message;

    // 数据
    private  T data;

    /**
     * json 反序列化为java对象时，该注解用于定义构造函数。当从json创建java时，@JsonCreator
     * 注解的构造函数被调用，如果没有@Json注解，则默认调用Java类的无参构造函数。
     *
     * @JsonProperty 关联json字段到java属性
     *
     * @param status
     * @param message
     * @param data
     */
    @JsonCreator
    public WebJsonResponse(@JsonProperty("status") int status,
                           @JsonProperty("message") String message,
                           @JsonProperty("data") T data) {

        this.status = status;
        this.message = message;
        this.data = data;
    }
}
